package com.zhentao.controller;

import com.zhentao.model.common.dtos.ResponseResult;
import com.zhentao.model.social.dto.SocialDto;
import com.zhentao.model.social.pojo.ApUserSocial;
import com.zhentao.service.ApUserSocialService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

@RestController
@RequestMapping("api/v1/user/social")
@Api(tags = "SocialController-动态管理")
public class SocialController {
    @Resource
    ApUserSocialService apUserSocialService;

    /**
     * 后台所有用户动态管理列表
     * @param dto
     * @return
     */
    @PostMapping("/list")
    @ApiOperation("后台所有用户动态管理列表")
    public ResponseResult list(@RequestBody SocialDto dto){
        return apUserSocialService.getList(dto);
    }

    /**
     * app所有用户动态管理列表以及点赞
     * @param dto
     * @return
     */
    @PostMapping("/applist")
    @ApiOperation("app所有用户动态管理列表以及点赞")
    public ResponseResult applist(@RequestBody SocialDto dto){
        return apUserSocialService.applist(dto);
    }

    /**
     * 后台所有用户动态未审核列表
     * @param dto
     * @return
     */
    @PostMapping("/notChecklist")
    @ApiOperation("后台所有用户动态未审核列表")
    public ResponseResult notChecklist(@RequestBody SocialDto dto){
        return apUserSocialService.notChecklist(dto);
    }
    /**
     * app所有审核通过可见用户动态展示
     * @return
     */
    @PostMapping("/appList")
    @ApiOperation("app所有审核通过可见用户动态展示")
    public ResponseResult appList(){
        return apUserSocialService.appList();
    }

    /**
     * 动态的发布接口
     * @param apUserSocial
     * @return
     */
    @PostMapping("/add")
    @ApiOperation("动态的上传接口")
    public ResponseResult addSocial(@RequestBody ApUserSocial apUserSocial){
        return apUserSocialService.addSocial(apUserSocial);
    }

    /**
     * 动态的发布接口
     * @param apUserSocial
     * @return
     */
    @PostMapping("/update")
    @ApiOperation("动态的更新接口")
    public ResponseResult updateSocial(@RequestBody ApUserSocial apUserSocial){
        return apUserSocialService.updateSocial(apUserSocial);
    }

    /**
     * 动态审核失败
     * @param dto
     * @return
     */
    @PostMapping("/loser")
    @ApiOperation("动态审核失败")
    public ResponseResult loser(@RequestBody SocialDto dto){
        return apUserSocialService.loser(dto);
    }

    /**
     * 动态审核成功
     * @param id
     * @return
     */
    @GetMapping("/status")
    @ApiOperation("动态审核成功")
    public ResponseResult status(@Param("id") Integer id){
        return apUserSocialService.status(id);
    }

    /**
     * 用户动态可见状态
     * @param id
     * @return
     */
    @PostMapping("/lookStatus")
    @ApiOperation("用户动态可见状态")
    public ResponseResult lookStatus(@RequestParam("id") int id){
        return apUserSocialService.lookStatus(id);
    }

    /**
     * 动态删除
     * @param id
     * @return
     */
    @PostMapping("/del")
    @ApiOperation("动态硬删除")
    public ResponseResult del(@RequestParam("id") Integer id){
        apUserSocialService.removeById(id);
        return ResponseResult.okResult("删除成功");
    }

    /**
     * 根据userid连接查询所有用户资料和动态资料
     * @return
     */
    @PostMapping("/getByUseId")
    @ApiOperation("根据userid连接查询所有用户资料和动态资料")
    public ResponseResult getByUseId(){
        return apUserSocialService.getByUseId();
    }

    /**
     * 根据userid查询个人用户资料和动态资料
     * @param dto
     * @return
     */
    @PostMapping("/getOneByUseId")
    @ApiOperation("根据userid查询个人用户资料和动态资料")
    public ResponseResult getOneByUseId(@RequestBody SocialDto dto){
        return apUserSocialService.getOneByUseId(dto.getUserId());
    }
    @ApiOperation("根据userid查看动态审核失败原因")
    @GetMapping("/getFeedback/{userId}")
    public ResponseResult getFeedback(@PathVariable("userId") Integer userId){
        return apUserSocialService.getFeedback(userId);
    }


}
